Table 다루기
✒️ 2025-06-02 10:04 내용 수정
DDL을 이용한 테이블 생성 및 편집
- DDL(Data Definition Language) 참고
- SQL 편집기 작동은 DBeaver#단축키 참고
- 한 번에 모든 스크립트를 실행하는 것이 아니라 SQL문을 하나씩 작동하면서 확인하는 것이 연습에 도움이 되었다.
Oralce 참고사항
- 이미 있는 예약어를 속성 이름으로 사용하고 싶다면 큰 따옴표" " 안에 작성한다.
- MySQL Table 다루기에선 백틱을 사용한다.
1. 테이블 생성
CREATE TABLE 테이블명 (
속성명1 데이터타입, -- 속성이 여러 개일 때 콤마 ","로 구분
속성명2 데이터타입 -- 마지막 속성에는 콤마 제외
); -- 세미콜론 ";" 필수
CREATE TABLE 테이블명 ( 속성명1 데이터타입, 속성명2 데이터타입 );
CREATE TABLE TBL_MEMBER (
NAME varchar2(500),
AGE number(2)
);
CREATE TABLE CAR(
ID NUMBER,
BRAND varchar2(100),
COLOR varchar2(100),
PRICE NUMBER,
CONSTRAINT CAR_PK PRIMARY key(ID)
);
2. 제약 조건 삭제
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명; -- 속성 삭제
ALTER TABLE CAR DROP CONSTRAINT CAR_PK;
- Table CAR가 존재하는 상태에서 시작한다.
- ALTER TABLE CAR DROP CONSTRAINT CAR_PK; 를 실행하면 제약 조건이 사라진 것을 확인할 수 있다.
3. 제약 조건 추가
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건종류; -- 이미 생성된 테이블에 제약 조건 추가
ALTER TABLE CAR ADD CONSTRAINT CAR_PK PRIMARY KEY(ID);
- ALTER TABLE CAR ADD CONSTRAINT CAR_PK PRIMARY KEY(ID); 의 결과로 제약 조건이 추가되었다.
4. 테이블 제거
DROP TABLE 테이블명;
DROP TABLE CAR;
- Tables에 CAR가 존재하는 상태다.
- DROP TABLE CAR; 명령을 실행한 후 확인을 누른다.
- Statistics 1에 명령어가 동작함을 확인할 수 있고, 왼쪽 Database 탐색기에서도 Tables에 CAR가 사라진 것을 확인할 수 있다.
5. 테이블 생성 시 제약 조건 추가
CREATE TABLE 테이블명(
속성명 데이터타입 CONSTRAINT 제약조건명 제약조건종류
);
CREATE TABLE 테이블명(
속성명 데이터타입 제약조건종류
);
CREATE TABLE 테이블명(
속성명 데이터타입,
CONSTRAINT 제약조건명 제약조건종류
);
- 이미 있는 명령어를 속성 이름으로 사용하고 싶다면 큰 따옴표" " 안에 작성한다.
- MySQL Table 다루기에선 백틱을 사용한다.
CREATE TABLE ANIMAL(
ID NUMBER PRIMARY KEY, -- 제약 조건 추가
"TYPE" VARCHAR2(100), -- TYPE이라는 속성 이름을 사용한다.
AGE NUMBER(2),
REED VARCHAR2(100)
);
- 제약 조건의 이름을 부여하지 않았을 때 기본값이 지정되는 것을 확인할 수 있다. 해당 제약 조건을 변경할 때 생성된 Table에서 확인할 수 있는 제약 조건의 이름으로 접근해야 한다.
6. 제약 조건 여러 개 추가하기
CREATE TABLE 테이블명(
속성명 데이터타입 제약조건1 제약조건2 CONSTRAINT 제약조건3명 제약조건3종류
);
CREATE TABLE COMPUTER(
ID NUMBER CONSTRAINT IN_PK PRIMARY KEY, -- 속성 생성과 동시에 제약 조건 부여
NAME VARCHAR2(100),
OS VARCHAR2(100),
"POWER" CHAR(1) DEFAULT 'O' NOT NULL CONSTRAINT POWER_CHECK CHECK("POWER"='O' OR "POWER"='X'), -- 제약 조건 여러개 부여
STARTDATE DATE CONSTRAINT START_DATE CHECK(STARTDATE >= TO_DATE('2023-10-25', 'YYYY-MM-DD')), -- 속성 생성과 동시에 제약 조건 부여
CONSTRAINT NAME_UN UNIQUE (NAME) -- 위에 있는 속성에 제약 조건 부여
);
- DEFAULT와 NOT NULL에 이름을 부여하지 않아 기본 이름값이 들어갔다.
7. PK 참조하기
CREATE TABLE 테이블명1(
속성명1 데이터타입 PRIMARY KEY;
);
CREATE TABLE 테이블명2(
속성명1 데이터타입 PRIMARY KEY;
속성명2 데이터타입, -- FK로 사용할 속성
CONSTRAINT 제약조건명 FOREIGN KEY(속성명2) REFERENCES 테이블명(PK 속성명)
);
-- 학생 테이블 생성
CREATE TABLE STUDENT(
ID VARCHAR2(100) PRIMARY KEY,
STD_NAME VARCHAR2(100),
STD_GRADE NUMBER,
STD_PW VARCHAR2(100),
STD_MAJOR VARCHAR2(100),
STD_SCORE NUMBER
);
-- 수업 수강인원 테이블 생성
CREATE TABLE CLASS(
ID VARCHAR2(100) PRIMARY KEY,
CLASS_ROOM NUMBER,
PROFESSOR VARCHAR2(100),
STD_ID VARCHAR2(100),
CONSTRAINT STD_FK FOREIGN KEY(STD_ID) REFERENCES STUDENT(ID)
);
-- 강의실 테이블 생성
CREATE TABLE LIBRARY(
ID VARCHAR2(100) PRIMARY KEY,
CLASS_ID VARCHAR2(100),
LOCATION VARCHAR2(100),
ROOM_NUMBER NUMBER,
REV_PLACE NUMBER,
STD_ID VARCHAR2(100),
CONSTRAINT CLASS_FK FOREIGN KEY(CLASS_ID) REFERENCES CLASS(ID),
CONSTRAINT STD_PLACE_FK FOREIGN KEY(STD_ID) REFERENCES STUDENT(ID)
);
- 엔티티 관계도를 누르면 테이블간의 관계도를 한 눈에 볼 수 있는 그래프가 뜬다.